package com.qida.clm.core.network.response;

import com.qida.clm.core.network.ResponseException;
import com.qida.clm.core.network.request.IRequest;

/**
 * Created by xiexiang on 2015/10/16.
 */
public interface IResponse<T>{

    /**
     * 在请求的当前线程中做数据的解析
     * @param result
     */
    public void processResponse(String result);
    public void processError(ResponseException error);
    public void processCache(T cache);

    public int getExecuteStatus();
    public int getStatusCode();
    public String getErrorMessage();
    public T getValues();
    public void setRequest(IRequest<T> request);
    public ResponseCallback<T> getCallBack();

    public interface ResponseCallback<T>{
        /**
         * 请求前准备,可以在这个方法显示等待的ui
         */
        public void onBeforeFire();
        /**
         * @return 返回请求提示消息
         */
        public String getRequestTips();
        /**
         * 请求完成,不论失败与否
         */
    	public void onRequestFinish();
        /**
         * 请求成功
         * @param result
         */
        public void onSuccess(T result);
        /**
         * 请求失败,网络失败\服务器返回错误消息也会调用该方法.
         * @param errorCode
         * @param errorMsg
         */
        public void onFailure(int errorCode, String errorMsg);
    }
}